Solid state drives (SSDs) comprised of NAND memory cells may be built to process received write requests to a logical block address (LBA) by using an indirection table to map the LBA address to a physical address. The SSD controller maintains metadata for the physical addresses being written in a separate volatile memory, such as a Dynamic Random Access Memory (DRAM). The SSD controller uses the indirection table to determine the physical data location storing the data for the LBA address and performs a metadata read, followed by writing the data to the physical data location and updating the metadata for the physical data location, such as by incrementing a write count field.
In current SSD systems, metadata and error correction code (ECC) data may be maintained for a block of LBAs. If there is a write to only one or less than all of the LBAs in a block, then the SSD controller performs a read-modify-write for all the LBAs in the block, which involves first reading all the physical data locations in the SSD memory cells to which the LBAs in the block map, modifying the physical data locations having the data for the modified LBAs, and then rewriting the read and modified data for all the LBAs in the block, including those not modified, back to the physical data locations in the SSD.